const a = {
  type: "File",
  start: 0,
  end: 510,
  loc: { start: { line: 1, column: 0 }, end: { line: 27, column: 0 } },
  errors: [],
  program: {
    type: "Program",
    start: 0,
    end: 510,
    loc: { start: { line: 1, column: 0 }, end: { line: 27, column: 0 } },
    sourceType: "module",
    interpreter: null,
    body: [
      {
        type: "ImportDeclaration",
        start: 0,
        end: 26,
        loc: { start: { line: 1, column: 0 }, end: { line: 1, column: 26 } },
        specifiers: [
          {
            type: "ImportDefaultSpecifier",
            start: 7,
            end: 12,
            loc: {
              start: { line: 1, column: 7 },
              end: { line: 1, column: 12 },
            },
            local: {
              type: "Identifier",
              start: 7,
              end: 12,
              loc: {
                start: { line: 1, column: 7 },
                end: { line: 1, column: 12 },
                identifierName: "React",
              },
              name: "React",
            },
          },
        ],
        importKind: "value",
        source: {
          type: "StringLiteral",
          start: 18,
          end: 25,
          loc: { start: { line: 1, column: 18 }, end: { line: 1, column: 25 } },
          extra: { rawValue: "react", raw: "'react'" },
          value: "react",
        },
      },
      {
        type: "ImportDeclaration",
        start: 27,
        end: 81,
        loc: { start: { line: 2, column: 0 }, end: { line: 2, column: 54 } },
        specifiers: [
          {
            type: "ImportSpecifier",
            start: 36,
            end: 54,
            loc: {
              start: { line: 2, column: 9 },
              end: { line: 2, column: 27 },
            },
            imported: {
              type: "Identifier",
              start: 36,
              end: 54,
              loc: {
                start: { line: 2, column: 9 },
                end: { line: 2, column: 27 },
                identifierName: "BrowserRouterProps",
              },
              name: "BrowserRouterProps",
            },
            importKind: null,
            local: {
              type: "Identifier",
              start: 36,
              end: 54,
              loc: {
                start: { line: 2, column: 9 },
                end: { line: 2, column: 27 },
                identifierName: "BrowserRouterProps",
              },
              name: "BrowserRouterProps",
            },
          },
        ],
        importKind: "value",
        source: {
          type: "StringLiteral",
          start: 62,
          end: 80,
          loc: { start: { line: 2, column: 35 }, end: { line: 2, column: 53 } },
          extra: { rawValue: "react-router-dom", raw: "'react-router-dom'" },
          value: "react-router-dom",
        },
      },
      {
        type: "ImportDeclaration",
        start: 82,
        end: 120,
        loc: { start: { line: 3, column: 0 }, end: { line: 3, column: 38 } },
        specifiers: [
          {
            type: "ImportDefaultSpecifier",
            start: 89,
            end: 101,
            loc: {
              start: { line: 3, column: 7 },
              end: { line: 3, column: 19 },
            },
            local: {
              type: "Identifier",
              start: 89,
              end: 101,
              loc: {
                start: { line: 3, column: 7 },
                end: { line: 3, column: 19 },
                identifierName: "ComplexTable",
              },
              name: "ComplexTable",
            },
          },
        ],
        importKind: "value",
        source: {
          type: "StringLiteral",
          start: 107,
          end: 119,
          loc: { start: { line: 3, column: 25 }, end: { line: 3, column: 37 } },
          extra: { rawValue: "pages/Home", raw: "'pages/Home'" },
          value: "pages/Home",
        },
      },
      {
        type: "ImportDeclaration",
        start: 121,
        end: 155,
        loc: { start: { line: 4, column: 0 }, end: { line: 4, column: 34 } },
        specifiers: [
          {
            type: "ImportDefaultSpecifier",
            start: 128,
            end: 134,
            loc: {
              start: { line: 4, column: 7 },
              end: { line: 4, column: 13 },
            },
            local: {
              type: "Identifier",
              start: 128,
              end: 134,
              loc: {
                start: { line: 4, column: 7 },
                end: { line: 4, column: 13 },
                identifierName: "Mypage",
              },
              name: "Mypage",
            },
          },
        ],
        importKind: "value",
        source: {
          type: "StringLiteral",
          start: 140,
          end: 154,
          loc: { start: { line: 4, column: 19 }, end: { line: 4, column: 33 } },
          extra: { rawValue: "pages/Mypage", raw: "'pages/Mypage'" },
          value: "pages/Mypage",
        },
      },
      {
        type: "InterfaceDeclaration",
        start: 157,
        end: 291,
        loc: { start: { line: 6, column: 0 }, end: { line: 11, column: 1 } },
        id: {
          type: "Identifier",
          start: 167,
          end: 177,
          loc: {
            start: { line: 6, column: 10 },
            end: { line: 6, column: 20 },
            identifierName: "IRouteItem",
          },
          name: "IRouteItem",
        },
        typeParameters: null,
        extends: [],
        implements: [],
        mixins: [],
        body: {
          type: "ObjectTypeAnnotation",
          start: 178,
          end: 291,
          loc: { start: { line: 6, column: 21 }, end: { line: 11, column: 1 } },
          callProperties: [],
          properties: [
            {
              type: "ObjectTypeProperty",
              start: 182,
              end: 194,
              loc: {
                start: { line: 7, column: 2 },
                end: { line: 7, column: 14 },
              },
              key: {
                type: "Identifier",
                start: 182,
                end: 185,
                loc: {
                  start: { line: 7, column: 2 },
                  end: { line: 7, column: 5 },
                  identifierName: "key",
                },
                name: "key",
              },
              static: false,
              proto: false,
              kind: "init",
              method: false,
              value: {
                type: "StringTypeAnnotation",
                start: 188,
                end: 194,
                loc: {
                  start: { line: 7, column: 8 },
                  end: { line: 7, column: 14 },
                },
              },
              variance: null,
              optional: true,
            },
            {
              type: "ObjectTypeProperty",
              start: 214,
              end: 226,
              loc: {
                start: { line: 8, column: 2 },
                end: { line: 8, column: 14 },
              },
              leadingComments: [
                {
                  type: "CommentLine",
                  value: " 无key时，没有权限校验",
                  start: 196,
                  end: 211,
                  loc: {
                    start: { line: 7, column: 16 },
                    end: { line: 7, column: 31 },
                  },
                },
              ],
              key: {
                type: "Identifier",
                start: 214,
                end: 218,
                loc: {
                  start: { line: 8, column: 2 },
                  end: { line: 8, column: 6 },
                  identifierName: "path",
                },
                name: "path",
              },
              static: false,
              proto: false,
              kind: "init",
              method: false,
              value: {
                type: "StringTypeAnnotation",
                start: 220,
                end: 226,
                loc: {
                  start: { line: 8, column: 8 },
                  end: { line: 8, column: 14 },
                },
              },
              variance: null,
              optional: false,
            },
            {
              type: "ObjectTypeProperty",
              start: 230,
              end: 245,
              loc: {
                start: { line: 9, column: 2 },
                end: { line: 9, column: 17 },
              },
              key: {
                type: "Identifier",
                start: 230,
                end: 235,
                loc: {
                  start: { line: 9, column: 2 },
                  end: { line: 9, column: 7 },
                  identifierName: "exact",
                },
                name: "exact",
              },
              static: false,
              proto: false,
              kind: "init",
              method: false,
              value: {
                type: "BooleanTypeAnnotation",
                start: 238,
                end: 245,
                loc: {
                  start: { line: 9, column: 10 },
                  end: { line: 9, column: 17 },
                },
              },
              variance: null,
              optional: true,
            },
            {
              type: "ObjectTypeProperty",
              start: 249,
              end: 288,
              loc: {
                start: { line: 10, column: 2 },
                end: { line: 10, column: 41 },
              },
              key: {
                type: "Identifier",
                start: 249,
                end: 258,
                loc: {
                  start: { line: 10, column: 2 },
                  end: { line: 10, column: 11 },
                  identifierName: "Component",
                },
                name: "Component",
              },
              static: false,
              proto: false,
              kind: "init",
              method: false,
              value: {
                type: "GenericTypeAnnotation",
                start: 260,
                end: 288,
                loc: {
                  start: { line: 10, column: 13 },
                  end: { line: 10, column: 41 },
                },
                typeParameters: {
                  type: "TypeParameterInstantiation",
                  start: 268,
                  end: 288,
                  loc: {
                    start: { line: 10, column: 21 },
                    end: { line: 10, column: 41 },
                  },
                  params: [
                    {
                      type: "GenericTypeAnnotation",
                      start: 269,
                      end: 287,
                      loc: {
                        start: { line: 10, column: 22 },
                        end: { line: 10, column: 40 },
                      },
                      typeParameters: null,
                      id: {
                        type: "Identifier",
                        start: 269,
                        end: 287,
                        loc: {
                          start: { line: 10, column: 22 },
                          end: { line: 10, column: 40 },
                          identifierName: "BrowserRouterProps",
                        },
                        name: "BrowserRouterProps",
                      },
                    },
                  ],
                },
                id: {
                  type: "QualifiedTypeIdentifier",
                  start: 260,
                  end: 268,
                  loc: {
                    start: { line: 10, column: 13 },
                    end: { line: 10, column: 21 },
                  },
                  qualification: {
                    type: "Identifier",
                    start: 260,
                    end: 265,
                    loc: {
                      start: { line: 10, column: 13 },
                      end: { line: 10, column: 18 },
                      identifierName: "React",
                    },
                    name: "React",
                  },
                  id: {
                    type: "Identifier",
                    start: 266,
                    end: 268,
                    loc: {
                      start: { line: 10, column: 19 },
                      end: { line: 10, column: 21 },
                      identifierName: "FC",
                    },
                    name: "FC",
                  },
                },
              },
              variance: null,
              optional: false,
            },
          ],
          indexers: [],
          internalSlots: [],
          exact: false,
        },
      },
      {
        type: "ExportNamedDeclaration",
        start: 293,
        end: 509,
        loc: { start: { line: 13, column: 0 }, end: { line: 26, column: 2 } },
        specifiers: [],
        source: null,
        declaration: {
          type: "VariableDeclaration",
          start: 300,
          end: 509,
          loc: { start: { line: 13, column: 7 }, end: { line: 26, column: 2 } },
          declarations: [
            {
              type: "VariableDeclarator",
              start: 306,
              end: 508,
              loc: {
                start: { line: 13, column: 13 },
                end: { line: 26, column: 1 },
              },
              id: {
                type: "Identifier",
                start: 306,
                end: 326,
                loc: {
                  start: { line: 13, column: 13 },
                  end: { line: 13, column: 33 },
                  identifierName: "routes",
                },
                name: "routes",
                typeAnnotation: {
                  type: "TypeAnnotation",
                  start: 312,
                  end: 326,
                  loc: {
                    start: { line: 13, column: 19 },
                    end: { line: 13, column: 33 },
                  },
                  typeAnnotation: {
                    type: "ArrayTypeAnnotation",
                    start: 314,
                    end: 326,
                    loc: {
                      start: { line: 13, column: 21 },
                      end: { line: 13, column: 33 },
                    },
                    elementType: {
                      type: "GenericTypeAnnotation",
                      start: 314,
                      end: 324,
                      loc: {
                        start: { line: 13, column: 21 },
                        end: { line: 13, column: 31 },
                      },
                      typeParameters: null,
                      id: {
                        type: "Identifier",
                        start: 314,
                        end: 324,
                        loc: {
                          start: { line: 13, column: 21 },
                          end: { line: 13, column: 31 },
                          identifierName: "IRouteItem",
                        },
                        name: "IRouteItem",
                      },
                    },
                  },
                },
              },
              init: {
                type: "ArrayExpression",
                start: 329,
                end: 508,
                loc: {
                  start: { line: 13, column: 36 },
                  end: { line: 26, column: 1 },
                },
                extra: { trailingComma: 505 },
                elements: [
                  {
                    type: "ObjectExpression",
                    start: 333,
                    end: 416,
                    loc: {
                      start: { line: 14, column: 2 },
                      end: { line: 19, column: 3 },
                    },
                    extra: { trailingComma: 411 },
                    properties: [
                      {
                        type: "ObjectProperty",
                        start: 339,
                        end: 350,
                        loc: {
                          start: { line: 15, column: 4 },
                          end: { line: 15, column: 15 },
                        },
                        method: false,
                        key: {
                          type: "Identifier",
                          start: 339,
                          end: 342,
                          loc: {
                            start: { line: 15, column: 4 },
                            end: { line: 15, column: 7 },
                            identifierName: "key",
                          },
                          name: "key",
                        },
                        computed: false,
                        shorthand: false,
                        value: {
                          type: "StringLiteral",
                          start: 344,
                          end: 350,
                          loc: {
                            start: { line: 15, column: 9 },
                            end: { line: 15, column: 15 },
                          },
                          extra: { rawValue: "home", raw: "'home'" },
                          value: "home",
                        },
                      },
                      {
                        type: "ObjectProperty",
                        start: 356,
                        end: 365,
                        loc: {
                          start: { line: 16, column: 4 },
                          end: { line: 16, column: 13 },
                        },
                        method: false,
                        key: {
                          type: "Identifier",
                          start: 356,
                          end: 360,
                          loc: {
                            start: { line: 16, column: 4 },
                            end: { line: 16, column: 8 },
                            identifierName: "path",
                          },
                          name: "path",
                        },
                        computed: false,
                        shorthand: false,
                        value: {
                          type: "StringLiteral",
                          start: 362,
                          end: 365,
                          loc: {
                            start: { line: 16, column: 10 },
                            end: { line: 16, column: 13 },
                          },
                          extra: { rawValue: "/", raw: "'/'" },
                          value: "/",
                        },
                      },
                      {
                        type: "ObjectProperty",
                        start: 371,
                        end: 382,
                        loc: {
                          start: { line: 17, column: 4 },
                          end: { line: 17, column: 15 },
                        },
                        method: false,
                        key: {
                          type: "Identifier",
                          start: 371,
                          end: 376,
                          loc: {
                            start: { line: 17, column: 4 },
                            end: { line: 17, column: 9 },
                            identifierName: "exact",
                          },
                          name: "exact",
                        },
                        computed: false,
                        shorthand: false,
                        value: {
                          type: "BooleanLiteral",
                          start: 378,
                          end: 382,
                          loc: {
                            start: { line: 17, column: 11 },
                            end: { line: 17, column: 15 },
                          },
                          value: true,
                        },
                      },
                      {
                        type: "ObjectProperty",
                        start: 388,
                        end: 411,
                        loc: {
                          start: { line: 18, column: 4 },
                          end: { line: 18, column: 27 },
                        },
                        method: false,
                        key: {
                          type: "Identifier",
                          start: 388,
                          end: 397,
                          loc: {
                            start: { line: 18, column: 4 },
                            end: { line: 18, column: 13 },
                            identifierName: "Component",
                          },
                          name: "Component",
                        },
                        computed: false,
                        shorthand: false,
                        value: {
                          type: "Identifier",
                          start: 399,
                          end: 411,
                          loc: {
                            start: { line: 18, column: 15 },
                            end: { line: 18, column: 27 },
                            identifierName: "ComplexTable",
                          },
                          name: "ComplexTable",
                        },
                      },
                    ],
                  },
                  {
                    type: "ObjectExpression",
                    start: 420,
                    end: 505,
                    loc: {
                      start: { line: 20, column: 2 },
                      end: { line: 25, column: 3 },
                    },
                    extra: { trailingComma: 500 },
                    properties: [
                      {
                        type: "ObjectProperty",
                        start: 426,
                        end: 439,
                        loc: {
                          start: { line: 21, column: 4 },
                          end: { line: 21, column: 17 },
                        },
                        method: false,
                        key: {
                          type: "Identifier",
                          start: 426,
                          end: 429,
                          loc: {
                            start: { line: 21, column: 4 },
                            end: { line: 21, column: 7 },
                            identifierName: "key",
                          },
                          name: "key",
                        },
                        computed: false,
                        shorthand: false,
                        value: {
                          type: "StringLiteral",
                          start: 431,
                          end: 439,
                          loc: {
                            start: { line: 21, column: 9 },
                            end: { line: 21, column: 17 },
                          },
                          extra: { rawValue: "mypage", raw: "'mypage'" },
                          value: "mypage",
                        },
                      },
                      {
                        type: "ObjectProperty",
                        start: 445,
                        end: 460,
                        loc: {
                          start: { line: 22, column: 4 },
                          end: { line: 22, column: 19 },
                        },
                        method: false,
                        key: {
                          type: "Identifier",
                          start: 445,
                          end: 449,
                          loc: {
                            start: { line: 22, column: 4 },
                            end: { line: 22, column: 8 },
                            identifierName: "path",
                          },
                          name: "path",
                        },
                        computed: false,
                        shorthand: false,
                        value: {
                          type: "StringLiteral",
                          start: 451,
                          end: 460,
                          loc: {
                            start: { line: 22, column: 10 },
                            end: { line: 22, column: 19 },
                          },
                          extra: { rawValue: "/mypage", raw: "'/mypage'" },
                          value: "/mypage",
                        },
                      },
                      {
                        type: "ObjectProperty",
                        start: 466,
                        end: 477,
                        loc: {
                          start: { line: 23, column: 4 },
                          end: { line: 23, column: 15 },
                        },
                        method: false,
                        key: {
                          type: "Identifier",
                          start: 466,
                          end: 471,
                          loc: {
                            start: { line: 23, column: 4 },
                            end: { line: 23, column: 9 },
                            identifierName: "exact",
                          },
                          name: "exact",
                        },
                        computed: false,
                        shorthand: false,
                        value: {
                          type: "BooleanLiteral",
                          start: 473,
                          end: 477,
                          loc: {
                            start: { line: 23, column: 11 },
                            end: { line: 23, column: 15 },
                          },
                          value: true,
                        },
                      },
                      {
                        type: "ObjectProperty",
                        start: 483,
                        end: 500,
                        loc: {
                          start: { line: 24, column: 4 },
                          end: { line: 24, column: 21 },
                        },
                        method: false,
                        key: {
                          type: "Identifier",
                          start: 483,
                          end: 492,
                          loc: {
                            start: { line: 24, column: 4 },
                            end: { line: 24, column: 13 },
                            identifierName: "Component",
                          },
                          name: "Component",
                        },
                        computed: false,
                        shorthand: false,
                        value: {
                          type: "Identifier",
                          start: 494,
                          end: 500,
                          loc: {
                            start: { line: 24, column: 15 },
                            end: { line: 24, column: 21 },
                            identifierName: "Mypage",
                          },
                          name: "Mypage",
                        },
                      },
                    ],
                  },
                ],
              },
            },
          ],
          kind: "const",
        },
        exportKind: "value",
      },
    ],
    directives: [],
  },
  comments: [
    {
      type: "CommentLine",
      value: " 无key时，没有权限校验",
      start: 196,
      end: 211,
      loc: { start: { line: 7, column: 16 }, end: { line: 7, column: 31 } },
    },
  ],
};
